The demand for scalable storage resources and the ability to provide rapid access to content stored thereby is a key concern to end-users. Enterprises, businesses, and individuals alike now use large scale filesystems to store data that is remotely accessible via a network. Such filesystems are often accessible via closed (e.g., enterprise) and open (e.g., Internet) networks and allow concurrent access via multiple client devices. Various implementations of large scale filesystems relying on network access have been developed. The primary differences between such filesystems are (1) that they use different protocols for the client devices and servers to communicate to read and write data and (2) that the data and corresponding metadata are stored in different ways.
For some filesystems, the protocol provides access to end-users by implementing APIs through a network, while others are specific to operating systems. Some such operating systems include default programs which may be called to synchronously determine and display filesystem information to an end-user. For example, UNIX includes a .du program which return file space usage of a directory.
Users benefit from knowing the amount of storage resources as well as the allocation of those resources to various portions of the filesystem, such as directories, sub-directories, and files in a filesystem hierarchy, in order to facilitate management of the filesystem. For example, administrators can allocate system resources to frequently accessed nodes and can determine if additional storage capacity is required.
Systems administrators find useful various kinds of filesystem queries. For example, one system administrator may wish to generate a list of all files created in the past hour.